package cn.liumouren.tool.security.autoconfigure.util;

import java.util.Collection;

/**
 * 集合工具类
 *
 * @author Daniel Liu
 * @date 2021/3/7 17:04
 */
public class CollectionUtil {

    /**
     * 集合1中是否包含集合2中所有的元素
     *
     * @param c1 集合1
     * @param c2 集合2
     * @return 集合1中是否包含集合2中所有的元素
     */
    public static boolean containsAll(Collection<?> c1, Collection<?> c2) {
        if (isEmpty(c1)) {
            return isEmpty(c2);
        }

        if (isEmpty(c2)) {
            return true;
        }

        if (c1.size() < c2.size()) {
            return false;
        }

        for (Object object : c2) {
            if (!c1.contains(object)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 集合是否为空
     *
     * @param collection 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 将存在于c2, 而在c1中没有的元素添加到c1
     * 在添加的时候会对c2进行trim()操作
     *
     * @param c1 {@link Collection<String>}
     * @param c2 {@link Collection<String>}
     */
    public static void addIfNotExist(Collection<String> c1, Collection<String> c2) {
        if (c2 != null && c1 != null) {
            for (String route : c2) {
                addIfNotExist(c1, route);
            }
        }
    }

    public static void addIfNotExist(Collection<String> c1, String c2) {
        if (c2 != null && c1 != null) {
            c2 = c2.trim();
            if (!c1.contains(c2)) {
                c1.add(c2);
            }
        }
    }


}
